package errcode

import (
	"errors"
)

func (i ErrCode) Error() string {
	return i.String()
}

func (i ErrCode) New(msg string) ErrWrap {
	return ErrWrap{
		errCode: i,
		err:     errors.New(msg),
	}
}

func (i ErrCode) Wrap(err error) ErrWrap {
	return ErrWrap{errCode: i, err: err}
}

type ErrWrap struct {
	errCode ErrCode
	err     error
}

func (ew ErrWrap) Error() string {
	return ew.err.Error()
}

func (ew ErrWrap) Code() ErrCode {
	return ew.errCode
}
